<!DOCTYPE html>
<!--
     SPDX-License-Identifier: CC-BY-SA-4.0
     SPDX-FileCopyrightText: 2020 seL4 Project a Series of LF Projects, LLC.
-->
<!-- Page last generated 2025-02-20 03:16:15 +0000 -->
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Jetson TX1 | seL4 docs</title>

    <!-- Our stylesheet and theme stylesheet.  Contains bootstrap. -->
    <link rel="stylesheet" href="/assets/css/style.css" type="text/css">
    <!-- Font awesome -->
    <link href="https://use.fontawesome.com/releases/v5.0.8/css/all.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">
    <!-- Pygments syntax highlighting  -->
    <link rel="stylesheet" href="/assets/css/highlighting/trac.css" type="text/css">
    <link rel="icon" type="image/x-icon" href="/assets/favicon.ico"><script defer data-domain="docs.sel4.systems"
	    src="https://analytics.sel4.systems/js/script.js"></script></head>

  <body class="container-fluid">

    



<header>
  <ul class="row menu">
    <li class="col-xs-12 col-md-2" >
            <a href="https://sel4.systems" class="skip-icon">
              <img class="img-responsive" src="/assets/logo-text-white.svg" alt="seL4 logo" />
            </a>
    </li>
    <li class="col-xs-12 col-md-10 menu">
      <nav aria-label="Banner links">
        <h2><a href="/Resources" />Resources</h2>
        <h2><a href="/processes" />Contributing</a></h2>
        <h2><a href="/projects" />Projects</h2>
        <h2><a href="/Tutorials" />Tutorials</h2>
        <iframe title="DuckDuckGo search bar" src="https://duckduckgo.com/search.html?site=docs.sel4.systems&prefill=Search%20sel4.systems" style="overflow:hidden;margin-bottom:10px; padding:0;height:40px;float:right;border-width: 0px"></iframe>
      </nav>
    </li>
  </ul>
  <div class="clear"></div>
  
<div class="breadcrumbs bootstrap hidden-sm-down">
  <nav class="sel-breadcrumb" aria-label="Breadcrumb" >
    <ol class=" list-unstyled" vocab="http://schema.org/" typeof="BreadcrumbList">
      
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/">
              <span property="name"><b>seL4 Docs</b></span>
            </a>
            <meta property="position" content="1" />
        </li>
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/Hardware/">
              <span property="name"><b>Supported platforms</b></span>
            </a>
            <meta property="position" content="2" />
        </li>
      
        

        
          <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <span property="name">Jetson TX1</span>
            <meta property="position" content="3" /></li>
          
    </ol>
  </nav>
  <nav class="sel-version" aria-label="Current Versions">
    <ol class="list-unstyled">
      <li class="list-unstyled text-right" style="margin-left:auto; padding:0rem 0rem;">
        Current versions:</li>
      <li class="list-unstyled text-right">
      <a href="/releases/sel4/13.0.0"><b>seL4-13.0.0</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/microkit/1.4.1"><b>microkit-1.4.1</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/camkes/camkes-3.11.0"><b>camkes-3.11.0</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/capdl/0.3.0"><b>capDL-0.3.0</b></a></li>
      </ol>
  </nav>
  <div class='clear'></div>
</div>


</header>

    <main>
      <div class="row">
  <div class="hidden-xs col-sm-4 col-md-3 col-lg-2">
    


<div class="sidebar">
















</div>

  </div>
  <div class="col-sm-8 col-md-9 col-lg-8 main">
    
      <nav aria-label="Table of Contents">
        <ul id="toc" class="section-nav">
<li class="toc-entry toc-h2"><a href="#building-sel4test">Building seL4test</a></li>
<li class="toc-entry toc-h2"><a href="#booting-via-tftp">Booting via TFTP</a></li>
<li class="toc-entry toc-h2"><a href="#booting-via-dfu">Booting via DFU</a></li>
<li class="toc-entry toc-h2"><a href="#booting-via-sd-card">Booting via SD Card</a></li>
<li class="toc-entry toc-h2"><a href="#internal-15-gib-usb-mass-storage">Internal 15 GiB USB mass storage</a></li>
</ul>
      </nav>
    
    <div class="content">
      <h1 id="jetson-tx1">Jetson TX1</h1>
<p>The Jetson TX1 is a multimedia and DSP board with a highly
optimized 64-bit memory controller which supports low latency accesses
from the CPU, high bandwidth accesses from the GPU and bounded latency
accesses from real-time devices such as the display.</p>

<p>It has two multi-core CPU clusters, each with 4 identical cores (One
Cortex-A57 cluster and one Cortex-A53 cluster). Each cluster has its own
L2 cache. Both clusters are ARMv8 compliant platforms. In addition the
Tx1 has an ARM7 shadow Co-processor.</p>

<p>The seL4 kernel has a limited port to the TX1 which supports the SoC
only in 64-bit mode. SMP, SMMU, Hyp-mode, etc are not supported by the
current port of the seL4 kernel to the TX1.</p>

<p>The stock TX1 comes with support for booting using DFU, using an SD-card
or by copying the OS you would like to boot onto the internal 15 GiB USB
mass storage that comes with the TX1.</p>

<p>Unfortunately the stock U-boot that comes with the TX1 does not support
TFTP-boot over the Ethernet port. You can get U-boot to support the
TX1’s Ethernet driver and enable TFTP-boot, but this is beyond the scope
of this article since it entails compiling a custom U-boot and then
flashing it onto the board.</p>

<h2 id="building-sel4test">Building seL4test</h2>

<p>Checkout the sel4test project using repo as per <a href="/seL4Test">seL4Test</a></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>repo init <span class="nt">-u</span> https://github.com/seL4/sel4test-manifest.git
repo <span class="nb">sync
mkdir </span>cbuild
<span class="nb">cd </span>cbuild
../init-build.sh <span class="nt">-DPLATFORM</span><span class="o">=</span>tx1 <span class="nt">-DAARCH64</span><span class="o">=</span>1
<span class="c"># The default cmake wrapper sets up a default configuration for the target platform.</span>
<span class="c"># To change individual settings, run `ccmake` and change the configuration</span>
<span class="c"># parameters to suit your needs.</span>
ninja

</code></pre></div></div>

<p>Generated binaries can be found in the <code class="language-plaintext highlighter-rouge">images/</code> directory.</p>

<p>The TX1 also supports AArch32 mode. If you choose to build the AArch32 kernel,
please be sure to pass <code class="language-plaintext highlighter-rouge">-DAARCH32=1</code> instead of <code class="language-plaintext highlighter-rouge">-DAARCH64=1</code>.</p>

<h2 id="booting-via-tftp">Booting via TFTP</h2>
<p>Unfortunately the stock U-boot that comes with
the TX1 does not support TFTP because
<a href="https://devtalk.nvidia.com/default/topic/962946/tx1-pxe-boot/">it does not come with an ethernet driver</a>, but if you so choose, it
seems that it is possible to recomplile u-boot with support for the
ethernet driver, and then flash your custom U-boot onto your TX1.
Instructions on how to do this are not included here.</p>

<h2 id="booting-via-dfu">Booting via DFU</h2>

<p>To boot via DFU, attach the usb-mini end of a USB cable to the USB-mini
port on the TX1. Then plug in the power supply for the TX1 and power it
on. When the TX1 is powered on, pay attention to the text being printed
out so that you can stop the boot process at the U-boot command prompt.
When you have successfully got to the U-boot command prompt, enter the
following:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>setenv dfu_alt_info "kernel ram 0x82000000 0x1000000"
setenv bootcmd_dfu "dfu 0 ram 0; go 0x82000000"
saveenv
</code></pre></div></div>

<p>To make U-boot enter its DFU server mode now, just type:
run bootcmd_dfu. U-boot should sit still waiting for a kernel image to
be uploaded. Now you should open up a new terminal on your PC, and type
the following:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>dfu-util --device 0955:701a -a kernel -D &lt;PATH_TO_YOUR_SEL4_IMAGE&gt;/sel4test-driver-image-arm-tx1
</code></pre></div></div>

<p>You may need to give dfu-util root privileges. If dfu-util is unable to
find the TX1 device, try unplugging and replugging in the USB mini-cable
that connects your PC to the TX1.</p>

<h2 id="booting-via-sd-card">Booting via SD Card</h2>

<p>Get an SD card and format it with either FAT32, EXT2 or EXT4. Then build
seL4test, or any of the other seL4 projects. The resulting image file
should be placed inside of /images within the build directory. Take that
image file, and copy it to the root folder of the SD card you intend to
use with your TX1.</p>

<p>Insert this SD card into your TX1 and then power on the TX1, and drop
into the U-boot command prompt. When you’re at the prompt, please type
the following:</p>

<p>For FAT32:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>fatload mmc 1 0x82000000 sel4test-driver-image-arm-tx1
go 0x82000000
</code></pre></div></div>

<p>For EXT2:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ext2load mmc 1 0x82000000 sel4test-driver-image-arm-tx1
go 0x82000000
</code></pre></div></div>

<p>For EXT4:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ext4load mmc 1 0x82000000 sel4test-driver-image-arm-tx1
go 0x82000000
</code></pre></div></div>

<h2 id="internal-15-gib-usb-mass-storage">Internal 15 GiB USB mass storage</h2>

<p>Booting off the internal USB mass storage is almost the same as booting
off the SD card, but in particular, you should do something along the
lines of:</p>

<p>Attach a USB mini cable to the mini-USB port on the TX1, and the other
end of the cable to your PC. Then power on the TX1 and drop into the
U-boot command line, and do the following:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ums mmc 0
</code></pre></div></div>

<p>Your PC should now show that a new USB mass storage device has been
connected. Copy the seL4 image into the root directory of this mass
storage device, then unmount it and remove it safely. Then go back to
the U-boot command line and press Ctrl+C to exit the mass-storage
server. Then, type the following, depending on the filesystem type that
you formatted the internal mass storage device to (or if you didn’t
personally format it, then whatever filesystem already existed on the
internal mass storage):</p>

<p>For FAT32:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>fatload mmc 0 0x82000000 sel4test-driver-image-arm-tx1
go 0x82000000
</code></pre></div></div>

<p>For EXT2:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ext2load mmc 0 0x82000000 sel4test-driver-image-arm-tx1
go 0x82000000
</code></pre></div></div>

<p>For EXT4:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ext4load mmc 0 0x82000000 sel4test-driver-image-arm-tx1
go 0x82000000
</code></pre></div></div>

    </div>
  </div>
</div>

    </main>
    


<footer class="site-footer">

  <h2 class="footer-heading">seL4 docs</h2>

  <div class="footer-col-wrapper">

    <div class="col-md-2">
      



<ul class="social-media-list">
  <li><a href="https://github.com/sel4"><i class="fab fa-github"></i> <span class="username">sel4</span></a></li><li><a href="https://github.com/sel4proj"><i class="fab fa-github"></i> <span class="username">sel4proj</span></a></li>
</ul>

    </div>

    <div class="col-md-8">
      <ul class="list-unstyled">
        <li>
          This site is for displaying seL4 related documentation.  Pull requests are welcome.
        </li>
        
          <li>
            Site last updated: Fri Feb 7 10:17:38 2025 +1100 ee78c8857c
          </li>
          <li>
                Page last updated: Tue Dec 19 12:55:38 2023 +0100 31df039362
          </li>
        
      </ul>
    </div>
    <div class="col-md-2">
<a href="https://github.com/seL4/docs/blob/master/Hardware/jetsontx1.md">View page on GitHub</a>
      <br />
      <a href="https://github.com/seL4/docs/edit/master/Hardware/jetsontx1.md">Edit page on GitHub</a>
      <br />
      <a href="/sitemap">Sitemap</a>
    </div>

  </div>

</footer>

  </body>
</html>
